/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Progra1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author manuel
 */
public class Caso6BD {
    
    private Connection conexion;
    private long mTiempoEjecucion;

    public Caso6BD() {
        conexion = null;
        mTiempoEjecucion=0;

    }

    /*
     * Metodo encargado de establecer la conexion por medio de la clase ConexionBD
     */
    public void conectarBD() {
        conexion = ConexionBD.getConnection();
    }

    ArrayList<Caso4Poliza> Caso6ConsultaTotal() {
    PreparedStatement instruccion = null;
        ArrayList<Caso4Poliza> listaPoliza = new ArrayList<Caso4Poliza>();

        try {

             
            instruccion = conexion.prepareStatement("select TC.Cedula, TC.Nombre, TC.Direccion, TC.Telefono, TC.CorreoElectronico, TV.Placa, TV.Color, TV.Año, TV.Modelo, TV.ValorFiscal, TV.FechaInscripcion, TS.NumeroPoliza, TS.FechaInicio, TS.MontoMensual from TablaClientes as TC natural  join TablaVehiculos as TV natural  join TablaSeguros as TS;");
            Date tiempoInicioSelect = new Date();
            ResultSet result = instruccion.executeQuery();
            Date tiempoFinalSelect = new Date();
            this.mTiempoEjecucion = tiempoFinalSelect.getTime() - tiempoInicioSelect.getTime();
           

            while (result.next()) {
                Caso4Poliza poliza = new Caso4Poliza();

                poliza.setmCedula(result.getInt("Cedula"));
                poliza.setmNombre(result.getString("Nombre"));
                poliza.setmDireccion(result.getString("Direccion"));
                poliza.setmTelefono(result.getInt("Telefono"));
                poliza.setmCorreo(result.getString("CorreoElectronico"));
                poliza.setmPlaca(result.getInt("Placa"));
                poliza.setmColor(result.getString("Color"));
                poliza.setmAño(result.getInt("Año"));
                poliza.setmModelo(result.getString("Modelo"));
                poliza.setmValor(result.getInt("ValorFiscal"));
                poliza.setMfechaInicio(result.getDate("FechaInicio"));
                poliza.setmFechaInscripcion(result.getDate("FechaInscripcion"));
                poliza.setmMonto(result.getInt("MontoMensual"));
                poliza.setmNumeroPoliza(result.getInt("NumeroPoliza"));

                listaPoliza.add(poliza);

            }
            instruccion.close();

        } catch (Exception ex) {
            System.out.println(ex);
        } finally {

            if (instruccion != null) {
                try {
                    instruccion.close();
                } catch (SQLException sqlEx) {
                } // ignore

                instruccion = null;
            }
        }
        return listaPoliza;
    }
    
    ArrayList<Caso4Poliza> Caso6ConsultaTotal(int offset, int cantidad) {
    PreparedStatement instruccion = null;
        ArrayList<Caso4Poliza> listaPoliza = new ArrayList<Caso4Poliza>();

        try {

             String query = "select TC.Cedula, TC.Nombre, TC.Direccion, TC.Telefono, TC.CorreoElectronico, TV.Placa, "
                     + "TV.Color, TV.Año, TV.Modelo, TV.ValorFiscal, TV.FechaInscripcion, TS.NumeroPoliza, TS.FechaInicio, TS.MontoMensual from TablaClientes as TC natural  join TablaVehiculos as TV natural  join TablaSeguros as TS limit " + offset + ", " + cantidad+";";
            instruccion = conexion.prepareStatement(query);
            Date tiempoInicioSelect = new Date();
            ResultSet result = instruccion.executeQuery();
            Date tiempoFinalSelect = new Date();
            this.mTiempoEjecucion = tiempoFinalSelect.getTime() - tiempoInicioSelect.getTime();
           

            while (result.next()) {
                Caso4Poliza poliza = new Caso4Poliza();

                poliza.setmCedula(result.getInt("Cedula"));
                poliza.setmNombre(result.getString("Nombre"));
                poliza.setmDireccion(result.getString("Direccion"));
                poliza.setmTelefono(result.getInt("Telefono"));
                poliza.setmCorreo(result.getString("CorreoElectronico"));
                poliza.setmPlaca(result.getInt("Placa"));
                poliza.setmColor(result.getString("Color"));
                poliza.setmAño(result.getInt("Año"));
                poliza.setmModelo(result.getString("Modelo"));
                poliza.setmValor(result.getInt("ValorFiscal"));
                poliza.setMfechaInicio(result.getDate("FechaInicio"));
                poliza.setmFechaInscripcion(result.getDate("FechaInscripcion"));
                poliza.setmMonto(result.getInt("MontoMensual"));
                poliza.setmNumeroPoliza(result.getInt("NumeroPoliza"));

                listaPoliza.add(poliza);

            }
            instruccion.close();

        } catch (Exception ex) {
            System.out.println(ex);
        } finally {

            if (instruccion != null) {
                try {
                    instruccion.close();
                } catch (SQLException sqlEx) {
                } // ignore

                instruccion = null;
            }
        }
        return listaPoliza;
    }
        public long getDuracion() {
        return this.mTiempoEjecucion;
    }
    
}
